package com.zhentao.controller;


import com.zhentao.file.service.FileStorageService;
import com.zhentao.model.common.dtos.ResponseResult;
import com.zhentao.model.common.pojo.dto.UsersDto;
import com.zhentao.model.common.pojo.users.param.Param;
import com.zhentao.model.common.pojo.users.param.UserBalanceParam;
import com.zhentao.service.IUsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author mp
 * @since 2024-12-17
 */
// 使用@RestController注解表明这个类是Spring框架下的RESTful风格的控制器，
// 其方法返回值会直接作为响应体返回给客户端，无需额外配置@ResponseBody注解
@RestController
// @RequestMapping("/users")为该控制器类中的所有方法配置了一个基础的请求路径前缀，即 "/users"
@RequestMapping("/auth/user")
public class UsersController {
    // @Autowired注解用于让Spring自动注入IUsersService类型的实例，方便后续调用相关业务逻辑方法
    @Autowired
    public IUsersService iUsersService;
    @Autowired
    private FileStorageService fileStorageService;

    // @PostMapping("/login")注解表示此方法用来处理HTTP POST请求，且请求路径为 "/users/login"（结合类级别的前缀路径）
    // 该方法接收一个从请求体转换而来的UsersDto对象，然后调用iUsersService的login方法进行处理，
    // 最后将处理结果（ResponseResult类型）返回给客户端
    @PostMapping("/login")
    public ResponseResult login(@RequestBody UsersDto usersDto) {
        return iUsersService.login(usersDto);
    }

    //        退出登录
    @PostMapping("/loginout")
    public ResponseResult userLogout() {
        return iUsersService.userlogout();
    }

    //        基本信息编辑
    @PostMapping("/update")
    // 调用用户服务层的方法，传入用户对象，以更新数据库中的用户信息
    public ResponseResult update(@RequestBody Param param) {
        return iUsersService.updateusers(param);
    }

    //        头像更换
    @PostMapping("/file/uploadAvatarImg")
    public ResponseResult uploadAvatarImg(@RequestBody MultipartFile file) {
        return iUsersService.uploadAvatarImg(file);
    }

    @PostMapping("/update/balance")
    /**
     * @description: 修改用户余额
     * @author: muhaoyang
     * @date: 2024/12/26 21:16
     * @param: [userBalanceParam]
     * @return: com.zhentao.model.common.dtos.ResponseResult
     **/
    public ResponseResult updateBalance(@RequestBody UserBalanceParam userBalanceParam) {
        return iUsersService.updateBalance(userBalanceParam);
    }

    @PostMapping("/update/ponit")
    /**
     * @description:修改用户积分
     * @author: muhaoyang
     * @date: 2025/1/4 20:04
     * @param: [userBalanceParam]
     * @return: com.zhentao.model.common.dtos.ResponseResult
     **/
    public ResponseResult updatePonit(@RequestBody UserBalanceParam userBalanceParam) {
        return iUsersService.updatePonit(userBalanceParam);
    }
}
